<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // function IPhone (id) {
        //     this.brand = 'apple';
        //     this.version = '13 pro';
        //     this.color = 'blue';
        //     this.id = id;
        //     this.heySiri = function () {
        //         console.log(this);
        //     };
        // }

        // const phone = new IPhone(1); // 实例 instance
        // const phone1 = new IPhone(2);
        // const phone2 = new IPhone(3);

        // phone.heySiri(); //


        // console.log('id:', phone.id); // 1
        // console.log('id:', phone1.id); // 2
        // console.log('id:', phone2.id); // 3

        // console.log(phone instanceof IPhone);

        // function createIPhone () {
        //     return {
        //         brand: 'apple',
        //         version: '13 pro',
        //         color: 'blue',
        //         heySiri () {
        //             console.log(this);
        //         },
        //     };
        // }

        // const p = createIPhone();
        // const p1 = createIPhone();
        // const p2 = createIPhone();

        // p.heySiri(); //

        // console.log(p instanceof Object);

        // console.log([] instanceof Array);



        // const phone = {
        //     brand: 'apple',
        //     version: '13 pro',
        //     color: 'blue',
        // };

        // const phone1 = {
        //     brand: 'apple',
        //     version: '13 pro',
        //     color: 'blue',
        // };

        // const phone2 = {
        //     brand: 'apple',
        //     version: '13 pro',
        //     color: 'blue',
        // };


        // function IPhone (id) {
        //     this.name = 'aa';
        //     this.brand = 'apple';
        //     this.version = '13 pro';
        //     this.color = 'blue';
        //     this.id = id;
        // }

        // IPhone.prototype.heySiri = function () {

        // };

        // const instance = new IPhone(1);

        // console.log(instance.__proto__.constructor);
        // console.log(instance.constructor);


        // IPhone.name = 'iphone';

        // const instance = new IPhone(1);
        // console.log(instance.__proto__.constructor); // IPhone
        // console.log(instance.__proto__.constructor.constructor); // Function

        // console.log(instance.name); // 'aa'
        // console.log(IPhone.name); // 'iphone'


        // class IPhone {
        //     constructor (id) {
        //         this.id = id;
        //     }
        //     static myName = 'cc';
        //     name = 'aa';
        //     brand = 'apple';
        //     static heySiri () {
        //         console.log(this);
        //     }
        // }

        // console.log(IPhone.myName);

        // IPhone.heySiri();

        // filter some every forEach map find findIndex indexOf includes sort reduce concat

        // console.log([].constructor === [].__proto__.constructor); // Array

        // function Star (id) {
        //     this.id = id;
        //     this.uname = 'aaa';
        // }

        // Star.prototype = {
        //     sayHi: () => {
        //         console.log(this);
        //     },
        // };

        // const instance = new Star(1);
        // // instance.__proto__ >>> Star.prototype
        // instance.sayHi(); // this: instance

        // Star.prototype.sayHi(); // this: window

        // function fn (a, b, c) {
        //     console.log('fn: ', this.uname);
        //     console.log(a + b);
        // }

        // console.log(this); // window

        // // 改this三兄弟
        // // fn.call  运行函数+改this
        // fn.call(instance, 1, 2, 3); // fn: 'aaa'
        // // apply 运行函数+改this
        // fn.apply(instance, [1, 2, 3]);
        // // bind 返回改this后的没有运行的函数
        // const newFn = fn.bind(instance);
        // newFn(1, 2, 3);

        // const p = {
        //     sayHi () {
        //         console.log(this.name);
        //     },
        // };

        // const a = {
        //     name: 'zhangsan',
        // };

        // // p.sayHi(); // 'zhangsan'
        // p.sayHi.call(a);
        // p.sayHi.apply(a);
        // p.sayHi.bind(a)();



    </script>
</body>
</html>